package cn.com.anypay.manager.common.validation;

import jakarta.validation.Constraint;
import jakarta.validation.Payload;
import java.lang.annotation.*;

/**
 * 身份证号格式验证注解
 * 验证身份证号是否符合中国大陆身份证规则：18位数字，最后一位可能是X
 */
@Target({ElementType.FIELD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = IdCardFormatValidator.class)
public @interface IdCardFormat {

    String message() default "身份证号格式错误：请输入有效的18位身份证号码";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * 是否允许为空（默认不允许）
     */
    boolean allowEmpty() default false;

    /**
     * 是否启用严格模式（校验位验证）
     */
    boolean strictMode() default true;

    /**
     * 是否允许15位老身份证号
     */
    boolean allow15Digits() default false;
}